{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Univariate Linear Regression Demo\n",
    "\n",
    "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n",
    "\n",
    "> ☝Before moving on with this demo you might want to take a look at:\n",
    "> - 📗[Math behind the Linear Regression](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/linear_regression)\n",
    "> - ⚙️[Linear Regression Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/linear_regression/linear_regression.py)\n",
    "\n",
    "**Linear regression** is a linear model, e.g. a model that assumes a linear relationship between the input variables `(x)` and the single output variable `(y)`. More specifically, that output variable `(y)` can be calculated from a linear combination of the input variables `(x)`.\n",
    "\n",
    "**Univariate Linear Regression** is a linear regression that has only _one_ input parameter and one output label.\n",
    "\n",
    "> **Demo Project:** In this demo we will build a model that will predict `Happiness.Score` for the countries based on `Economy.GDP.per.Capita` parameter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# To make debugging of linear_regression module easier we enable imported modules autoreloading feature.\n",
    "# By doing this you may change the code of linear_regression library and all these changes will be available here.\n",
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "# Add project root folder to module loading paths.\n",
    "import sys\n",
    "sys.path.append('../..')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Import Dependencies\n",
    "\n",
    "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n",
    "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n",
    "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n",
    "- [linear_regression](https://github.com/trekhleb/homemade-machine-learning/blob/master/src/linear_regression/linear_regression.py) - custom implementation of linear regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import 3rd party dependencies.\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Import custom linear regression implementation.\n",
    "from homemade.linear_regression import LinearRegression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load the Data\n",
    "\n",
    "In this demo we will use [World Happindes Dataset](https://www.kaggle.com/unsdsn/world-happiness#2017.csv) for 2017."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Country</th>\n",
       "      <th>Happiness.Rank</th>\n",
       "      <th>Happiness.Score</th>\n",
       "      <th>Whisker.high</th>\n",
       "      <th>Whisker.low</th>\n",
       "      <th>Economy..GDP.per.Capita.</th>\n",
       "      <th>Family</th>\n",
       "      <th>Health..Life.Expectancy.</th>\n",
       "      <th>Freedom</th>\n",
       "      <th>Generosity</th>\n",
       "      <th>Trust..Government.Corruption.</th>\n",
       "      <th>Dystopia.Residual</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Norway</td>\n",
       "      <td>1</td>\n",
       "      <td>7.537</td>\n",
       "      <td>7.594445</td>\n",
       "      <td>7.479556</td>\n",
       "      <td>1.616463</td>\n",
       "      <td>1.533524</td>\n",
       "      <td>0.796667</td>\n",
       "      <td>0.635423</td>\n",
       "      <td>0.362012</td>\n",
       "      <td>0.315964</td>\n",
       "      <td>2.277027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Denmark</td>\n",
       "      <td>2</td>\n",
       "      <td>7.522</td>\n",
       "      <td>7.581728</td>\n",
       "      <td>7.462272</td>\n",
       "      <td>1.482383</td>\n",
       "      <td>1.551122</td>\n",
       "      <td>0.792566</td>\n",
       "      <td>0.626007</td>\n",
       "      <td>0.355280</td>\n",
       "      <td>0.400770</td>\n",
       "      <td>2.313707</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Iceland</td>\n",
       "      <td>3</td>\n",
       "      <td>7.504</td>\n",
       "      <td>7.622030</td>\n",
       "      <td>7.385970</td>\n",
       "      <td>1.480633</td>\n",
       "      <td>1.610574</td>\n",
       "      <td>0.833552</td>\n",
       "      <td>0.627163</td>\n",
       "      <td>0.475540</td>\n",
       "      <td>0.153527</td>\n",
       "      <td>2.322715</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Switzerland</td>\n",
       "      <td>4</td>\n",
       "      <td>7.494</td>\n",
       "      <td>7.561772</td>\n",
       "      <td>7.426227</td>\n",
       "      <td>1.564980</td>\n",
       "      <td>1.516912</td>\n",
       "      <td>0.858131</td>\n",
       "      <td>0.620071</td>\n",
       "      <td>0.290549</td>\n",
       "      <td>0.367007</td>\n",
       "      <td>2.276716</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Finland</td>\n",
       "      <td>5</td>\n",
       "      <td>7.469</td>\n",
       "      <td>7.527542</td>\n",
       "      <td>7.410458</td>\n",
       "      <td>1.443572</td>\n",
       "      <td>1.540247</td>\n",
       "      <td>0.809158</td>\n",
       "      <td>0.617951</td>\n",
       "      <td>0.245483</td>\n",
       "      <td>0.382612</td>\n",
       "      <td>2.430182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Netherlands</td>\n",
       "      <td>6</td>\n",
       "      <td>7.377</td>\n",
       "      <td>7.427426</td>\n",
       "      <td>7.326574</td>\n",
       "      <td>1.503945</td>\n",
       "      <td>1.428939</td>\n",
       "      <td>0.810696</td>\n",
       "      <td>0.585384</td>\n",
       "      <td>0.470490</td>\n",
       "      <td>0.282662</td>\n",
       "      <td>2.294804</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Canada</td>\n",
       "      <td>7</td>\n",
       "      <td>7.316</td>\n",
       "      <td>7.384403</td>\n",
       "      <td>7.247597</td>\n",
       "      <td>1.479204</td>\n",
       "      <td>1.481349</td>\n",
       "      <td>0.834558</td>\n",
       "      <td>0.611101</td>\n",
       "      <td>0.435540</td>\n",
       "      <td>0.287372</td>\n",
       "      <td>2.187264</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>New Zealand</td>\n",
       "      <td>8</td>\n",
       "      <td>7.314</td>\n",
       "      <td>7.379510</td>\n",
       "      <td>7.248490</td>\n",
       "      <td>1.405706</td>\n",
       "      <td>1.548195</td>\n",
       "      <td>0.816760</td>\n",
       "      <td>0.614062</td>\n",
       "      <td>0.500005</td>\n",
       "      <td>0.382817</td>\n",
       "      <td>2.046456</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Sweden</td>\n",
       "      <td>9</td>\n",
       "      <td>7.284</td>\n",
       "      <td>7.344095</td>\n",
       "      <td>7.223905</td>\n",
       "      <td>1.494387</td>\n",
       "      <td>1.478162</td>\n",
       "      <td>0.830875</td>\n",
       "      <td>0.612924</td>\n",
       "      <td>0.385399</td>\n",
       "      <td>0.384399</td>\n",
       "      <td>2.097538</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Australia</td>\n",
       "      <td>10</td>\n",
       "      <td>7.284</td>\n",
       "      <td>7.356651</td>\n",
       "      <td>7.211349</td>\n",
       "      <td>1.484415</td>\n",
       "      <td>1.510042</td>\n",
       "      <td>0.843887</td>\n",
       "      <td>0.601607</td>\n",
       "      <td>0.477699</td>\n",
       "      <td>0.301184</td>\n",
       "      <td>2.065211</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Country  Happiness.Rank  Happiness.Score  Whisker.high  Whisker.low  \\\n",
       "0       Norway               1            7.537      7.594445     7.479556   \n",
       "1      Denmark               2            7.522      7.581728     7.462272   \n",
       "2      Iceland               3            7.504      7.622030     7.385970   \n",
       "3  Switzerland               4            7.494      7.561772     7.426227   \n",
       "4      Finland               5            7.469      7.527542     7.410458   \n",
       "5  Netherlands               6            7.377      7.427426     7.326574   \n",
       "6       Canada               7            7.316      7.384403     7.247597   \n",
       "7  New Zealand               8            7.314      7.379510     7.248490   \n",
       "8       Sweden               9            7.284      7.344095     7.223905   \n",
       "9    Australia              10            7.284      7.356651     7.211349   \n",
       "\n",
       "   Economy..GDP.per.Capita.    Family  Health..Life.Expectancy.   Freedom  \\\n",
       "0                  1.616463  1.533524                  0.796667  0.635423   \n",
       "1                  1.482383  1.551122                  0.792566  0.626007   \n",
       "2                  1.480633  1.610574                  0.833552  0.627163   \n",
       "3                  1.564980  1.516912                  0.858131  0.620071   \n",
       "4                  1.443572  1.540247                  0.809158  0.617951   \n",
       "5                  1.503945  1.428939                  0.810696  0.585384   \n",
       "6                  1.479204  1.481349                  0.834558  0.611101   \n",
       "7                  1.405706  1.548195                  0.816760  0.614062   \n",
       "8                  1.494387  1.478162                  0.830875  0.612924   \n",
       "9                  1.484415  1.510042                  0.843887  0.601607   \n",
       "\n",
       "   Generosity  Trust..Government.Corruption.  Dystopia.Residual  \n",
       "0    0.362012                       0.315964           2.277027  \n",
       "1    0.355280                       0.400770           2.313707  \n",
       "2    0.475540                       0.153527           2.322715  \n",
       "3    0.290549                       0.367007           2.276716  \n",
       "4    0.245483                       0.382612           2.430182  \n",
       "5    0.470490                       0.282662           2.294804  \n",
       "6    0.435540                       0.287372           2.187264  \n",
       "7    0.500005                       0.382817           2.046456  \n",
       "8    0.385399                       0.384399           2.097538  \n",
       "9    0.477699                       0.301184           2.065211  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Load the data.\n",
    "data = pd.read_csv('../../data/world-happiness-report-2017.csv')\n",
    "\n",
    "# Print the data table.\n",
    "data.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 12 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Print histograms for each feature to see how they vary.\n",
    "histohrams = data.hist(grid=False, figsize=(10, 10))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Split the Data Into Training and Test Subsets\n",
    "\n",
    "In this step we will split our dataset into _training_ and _testing_ subsets (in proportion 80/20%).\n",
    "\n",
    "Training data set will be used for training of our linear model. Testing dataset will be used for validating of the model. All data from testing dataset will be new to model and we may check how accurate are model predictions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Split data set on training and test sets with proportions 80/20.\n",
    "# Function sample() returns a random sample of items.\n",
    "train_data = data.sample(frac=0.8)\n",
    "test_data = data.drop(train_data.index)\n",
    "\n",
    "# Decide what fields we want to process.\n",
    "input_param_name = 'Economy..GDP.per.Capita.'\n",
    "output_param_name = 'Happiness.Score'\n",
    "\n",
    "# Split training set input and output.\n",
    "x_train = train_data[[input_param_name]].values\n",
    "y_train = train_data[[output_param_name]].values\n",
    "\n",
    "# Split test set input and output.\n",
    "x_test = test_data[[input_param_name]].values\n",
    "y_test = test_data[[output_param_name]].values\n",
    "\n",
    "# Plot training data.\n",
    "plt.scatter(x_train, y_train, label='Training Dataset')\n",
    "plt.scatter(x_test, y_test, label='Test Dataset')\n",
    "plt.xlabel(input_param_name)\n",
    "plt.ylabel(output_param_name)\n",
    "plt.title('Countries Happines')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we may visualize the data sets to see theirs shape."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Init and Train Linear Regression Model\n",
    "\n",
    "> ☝🏻This is the place where you might want to play with model configuration.\n",
    "\n",
    "- `polynomial_degree` - this parameter will allow you to add additional polynomial features of certain degree. More features - more curved the line will be.\n",
    "- `num_iterations` - this is the number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n",
    "- `learning_rate` - this is the size of the gradient descent step. Small learning step will make algorithm work longer and will probably require more iterations to reach the minimum of the cost function. Big learning steps may couse missing the minimum and growth of the cost function value with new iterations.\n",
    "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n",
    "- `polynomial_degree` - the degree of additional polynomial features (`x1^2 * x2, x1^2 * x2^2, ...`). This will allow you to curve the predictions.\n",
    "- `sinusoid_degree` - the degree of sinusoid parameter multipliers of additional features (`sin(x), sin(2*x), ...`). This will allow you to curve the predictions by adding sinusoidal component to the prediction curve."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initial cost: 226681.86\n",
      "Optimized cost: 3476.54\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Model Parameters</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.340717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.093946</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Model Parameters\n",
       "0          5.340717\n",
       "1          1.093946"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Set up linear regression parameters.\n",
    "num_iterations = 500  # Number of gradient descent iterations.\n",
    "regularization_param = 0  # Helps to fight model overfitting.\n",
    "learning_rate = 0.01  # The size of the gradient descent step.\n",
    "polynomial_degree = 0  # The degree of additional polynomial features.\n",
    "sinusoid_degree = 0  # The degree of sinusoid parameter multipliers of additional features.\n",
    "\n",
    "# Init linear regression instance.\n",
    "linear_regression = LinearRegression(x_train, y_train, polynomial_degree, sinusoid_degree)\n",
    "\n",
    "# Train linear regression.\n",
    "(theta, cost_history) = linear_regression.train(\n",
    "    learning_rate,\n",
    "    regularization_param,\n",
    "    num_iterations\n",
    ")\n",
    "\n",
    "# Print training results.\n",
    "print('Initial cost: {:.2f}'.format(cost_history[0]))\n",
    "print('Optimized cost: {:.2f}'.format(cost_history[-1]))\n",
    "\n",
    "# Print model parameters\n",
    "theta_table = pd.DataFrame({'Model Parameters': theta.flatten()})\n",
    "theta_table.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analyze Gradient Descent Progress\n",
    "\n",
    "The plot below illustrates how the cost function value changes over each iteration. You should see it decreasing. \n",
    "\n",
    "In case if cost function value increases it may mean that gradient descent missed the cost function minimum and with each step it goes further away from it. In this case you might want to reduce the learning rate parameter (the size of the gradient step).\n",
    "\n",
    "From this plot you may also get an understanding of how many iterations you need to get an optimal value of the cost function. In current example you may see that there is no much sense to increase the number of gradient descent iterations over 500 since it will not reduce cost function significantly.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot gradient descent progress.\n",
    "plt.plot(range(num_iterations), cost_history)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.title('Gradient Descent Progress')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plot the Model Predictions\n",
    "\n",
    "Since our model is trained now we may plot its predictions over the training and test datasets to see how well it fits the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEWCAYAAABliCz2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzsnXl4FFXWh99DCBBcAAFFVhEUZA2KiII6ijsKyKoj4y6jozJuKAyOIKIGmE9chtFxUEFxQ1kG9w0dBQcVZFcQUFSCKDCENUCW8/1R1aETujvV6b1z3ufpJ923blWdriSnbp177u+IqmIYhmGkP1USbYBhGIYRH8zhG4ZhVBLM4RuGYVQSzOEbhmFUEszhG4ZhVBLM4RuGYVQSzOEbaY2InC4iqxNtRzQRkb+IyORE22GkHubwjYgRkd+LyEIR2SUiv4jIOyLSPQ7nVRFpGaqPqn6mqq2ifN7ficiGAO2fiMj10TxXIFT1IVWN+XmM9MMcvhERInIH8CjwEHAU0BT4B9A7kXYBiEjVRNtgGMmEOXyjwohILWAMcLOqzlTV3apaoKpvqOowt091EXlURDa6r0dFpLq77WoRmVfmmCWjdhGZIiKTROQtEdkpIl+ISAt326fuLkvdJ4tBvpG3iNwjIpuA58qOxkWkoYjMEJHNIvKDiAz129bFfVLZISK/isgjEVybOiLypnuebe77xn7bPxGRh0XkS/d8/xaRI9xtx7jXYYh7zX4Rkbv89h0tItPK9L1KRH4SkS0iMtKvbxURGS4i60Rkq4hM9ztPDRGZ5rbnichXInJURb+zkfyYwzci4VSgBjArRJ+RQFcgG+gIdAHuDeMclwH3A3WAtcCDAKp6hru9o6oeqqqvup8bAEcAzYAh/gcSkSrAG8BSoBHQA7hNRM53uzwGPKaqhwMtgOlh2FmWKsBzrh1NgXzg72X6XAlcCxwNFAKPl9l+FnAccB5wj4icE+J83YFWON/pPhE5wW2/FegDnAk0BLYBk9xtVwG1gCZAXeBG104jTTGHb0RCXWCLqhaG6HMFMEZVf1PVzTjO+w9hnGOWqn7pnuNFnBtHKIqBUaq6T1XLOq+TgfqqOkZV96vq98C/cG4qAAVASxGpp6q7VHVBiPM0dEfFJS8cpwuAqm5V1RmqukdVd+LcqM4sc4wXVHWFqu4G/goMFJEMv+33u09Ny3FuHpeHsOd+Vc1X1aU4N7SObvuNwEhV3aCq+4DRQH833FWA8ztsqapFqrpIVXeEOIeR4pjDNyJhK1CvnFh5Q+BHv88/um1e2eT3fg9waDn9N6vq3iDbmlHGUQN/wZl7ALgOOB5Y5YY3Lg5xno2qWtv/BZSEp0Skpoj8U0R+FJEdwKdA7TIO/We/9z8CmUC9ENtDXbdg16kZMMvv+34LFLnf+QXgPeAVN3Q0XkQyQ5zDSHHM4RuR8F9gH07IIBgbcZyOj6ZuG8BuoKZvg4g0iIJNoeRffwZ+KOOoD1PViwBUdY2qXg4cCYwDXheRQypox504IZZT3BCRLwQlfn2a+L1vijPi3hJi+0bC52fgwjLfuYaq5rrzLferahvgNOBinDCTkaaYwzcqjKpuB+4DJolIH3dUmykiF4rIeLfby8C9IlJfROq5/ae525YCbUUkW0Rq4IQbwuFX4Ngw+n8J7HQndbNEJENE2onIyQAiMlhE6qtqMZDn7lMcpk0+DsOJh+e5k6SjAvQZLCJtRKQmzuT366pa5Lf9r+41bQtcA7wa4Bjl8RTwoIg0A3B/D73d92eJSHv3qWMHzg2not/XSAHM4RsRoar/B9yBMxG7GWdEeQsw2+0yFlgILAOWA1+7bajqdziO7kNgDX4hEY+MBqa64YqBHmwtwhnFZgM/4IymJ+NMXAJcAKwUkV04E7iXBZgH8MqjQJZ7jgXAuwH6vABMwQnH1ACGltn+H5yJ6o+Av6nq+xWw4zFgDvC+iOx0bTnF3dYAeB3H2X/rnu+FCpzDSBHECqAYRvwRkU+Aaap60IpZETkG54aUWc6EuGGEhY3wDcMwKgnm8A3DMCoJFtIxDMOoJNgI3zAMo5KQVOJS9erV02OOOSbRZhiGYaQMixYt2qKq9b30TSqHf8wxx7Bw4cJEm2EYhpEyiMiP5fdysJCOYRhGJcEcvmEYRiXBHL5hGEYlIali+IEoKChgw4YN7N0bTADRSEVq1KhB48aNycw0cUbDiBdJ7/A3bNjAYYcdxjHHHIOIlL+DkfSoKlu3bmXDhg00b9480eYYRqUh6UM6e/fupW7duubs0wgRoW7duvbUZhhxJukdPmDOPg2x36lhxJ+UcPiGYRhG5JjD90BGRgbZ2dm0a9eOAQMGsGfPngof65NPPuHii53KeXPmzCEnJydo37y8PP7xj3+UfN64cSP9+/ev8LkNI6lYNh0mtoPRtZ2fyyKpGX+A2Ytz6ZYzl+bD36JbzlxmL86NynHTAXP4HsjKymLJkiWsWLGCatWq8dRTT5XarqoUF4dfKKhXr14MHz486PayDr9hw4a8/vrrYZ/HMJKOZdMp/PetsP1nQGH7z87ncpx+ec589uJcRsxcTm5ePgrk5uUzYuZyc/ou5vDD5PTTT2ft2rWsX7+eVq1aceWVV9KuXTt+/vln3n//fU499VROPPFEBgwYwK5duwB49913ad26NSeeeCIzZ84sOdaUKVO45ZZbAPj111+59NJL6dixIx07duTzzz9n+PDhrFu3juzsbIYNG8b69etp164d4ExmX3PNNbRv355OnTrx8ccflxyzb9++XHDBBRx33HHcfffdcb5ChlGaQE56zzv3UbWo9KR91aK97HnnvpDHKc+ZT3hvNfkFRaX2yy8oYsJ7q6P6nVKVpE/LLMVtt8GSJdE9ZnY2PPqop66FhYW88847XHDBBQCsWbOGqVOn0rVrV7Zs2cLYsWP58MMPOeSQQxg3bhyPPPIId999NzfccANz586lZcuWDBo0KOCxhw4dyplnnsmsWbMoKipi165d5OTksGLFCpa433n9+vUl/SdNmoSIsHz5clatWsV5553Hd999B8CSJUtYvHgx1atXp1WrVtx66600adIk0GkNI6b4nLTPCfucdK+MTQH718gP3A6hnXmfTo0A2JgXuCJlsPbKho3wPZCfn092djadO3emadOmXHfddQA0a9aMrl27ArBgwQK++eYbunXrRnZ2NlOnTuXHH39k1apVNG/enOOOOw4RYfDgwQHPMXfuXG666SbAmTOoVatWwH4+5s2bV3Ks1q1b06xZsxKH36NHD2rVqkWNGjVo06YNP/7oWVvJMKJKMCe9sbhuwP7B2sGbM29YOytgn2DtlY3UGuF7HIlHG18MvyyHHHJIyXtV5dxzz+Xll18u1SfQfrGmevXqJe8zMjIoLLSyqEZiCOakxxcOJCdzMjVlf0nbHq3G5GqDGR3kWA1rZ5Eb4Hj+znzY+a1KPVEAZGVmMOz8VhWyP92wEX6U6Nq1K/Pnz2ft2rUA7N69m++++47WrVuzfv161q1bB3DQDcFHjx49ePLJJwEoKipi+/btHHbYYezcuTNg/9NPP50XX3wRgO+++46ffvqJVq3sj9pILoKNrD+tfhb36RA2FNejWIUNxfUYWXQD/y7uFnRCdtj5rcjKzCjVVtaZ9+nUiIf7tqdR7SwEaFQ7i4f7ti8J+VR2UmuEn8TUr1+fKVOmcPnll7Nv3z4Axo4dy/HHH8/TTz9Nz549qVmzJqeffnpAJ/7YY48xZMgQnnnmGTIyMnjyySc59dRT6datG+3atePCCy/k5ptvLun/pz/9iZtuuon27dtTtWpVpkyZUmpkbxjJQLAR9+hebYG2DHqvBxvz8qmVlcnuokIK9hQAB2L9QImz9v2c8N5qNubl07B2FsPOb3WQM+/TqZE5+CAkVU3bzp07a9kCKN9++y0nnHBCgiwyYon9bisHsxfnBnTS/u1VRCgK4Isa1c5i/vCzE2B16iAii1S1s5e+NsI3DCMqBHPsgUbcZbN3Ajl7sOyaaGMO3zCMiAmWfgkEDK8Eyt4JhGXXRBebtDUMI2LCXfAUKNumLJZdE33M4RuGETHhLnjKKEctNUPEsmtigIV0DMMIm7Lx+lpZmeTlFxzUL1hIJljM3kexqjn7GGAjfMMwwiKQps3u/YVkVik9ag8VkmlUTmw+6WL3H38MW7Yk2oqIMYcfgq1bt5KdnU12djYNGjSgUaNGJZ/3799f/gGAa665htWrQws3TZo0qWQRVaR0796dVq1a0aFDB1q3bs2tt97K9u3bQ+5TXFwcUqa5osycOZNVq1ZF/bhGYgkUry8oUg6tUdXzgqdAi6h8JFXsfulSuPBCOPtseOyxRFsTMRbSCUHdunVLpBFGjx7NoYceyl133VWqj6qiqlSpEvje+dxzz5V7Hv8FVdHg1VdfLbkp3X333fTt25ePPvooaH+fww8l1VwRZs6cSZUqVWjdunVUj2sklmBx+bw9BSy+7zxPx/BfRJWbl0+Gm4ffKMhiqrjz44/w17/CtGlQuzZMmABR/j9NBGk3wo9H8YO1a9fSpk0brrjiCtq2bcsvv/zCkCFD6Ny5M23btmXMmDElfbt3786SJUsoLCykdu3aDB8+nI4dO3Lqqafy22+/AXDvvffyqKsT1L17d4YPH06XLl1o1aoVn3/+OeBINfTr1482bdrQv39/OnfuXK5OT7Vq1fjb3/7GmjVrWLlyJQCXXHIJJ510Em3btmXy5MkADB8+nJ07d5Kdnc2VV14ZtF9hYSF/+MMfaN++Pe3atePxxx8HHNXQ888/n5NOOokzzjiD7777js8++4y3336b22+/nezs7FJKn0ZqEy2Bsj6dGjF/+Nmsz+nJuocvYn1OT+YPPzuxzn7rVrjzTjj+eJg+He66C9atc35mJVmYqQKk1Qg/3FzgSFi1ahXPP/88nTs7C9xycnI44ogjKCws5KyzzqJ///60adOm1D7bt2/nzDPPJCcnhzvuuINnn3024KhaVfnyyy+ZM2cOY8aM4d133+WJJ56gQYMGzJgxg6VLl3LiiSd6srNq1ap06NCBVatW0bZtW6ZOncoRRxzBnj176Ny5M/369SMnJ4fJkyeXuoEE6vfdd9+xZcsWli93rmleXh4AQ4YMYfLkybRo0YL58+dzyy238P7773PRRRfRv39/+vTpU6FrXNkItnAp2UhLgbI9e5yQzbhxsHMnXH01jB4NaSYrnlYO34tedrRo0aJFibMHRxTtmWeeobCwkI0bN/LNN98c5PCzsrK48MILATjppJP47LPPAh67b9++JX18I+N58+Zxzz33ANCxY0fatm3r2VZ/+YyJEycyZ84cADZs2FBSYKUsgfq1bNmS1atXM3ToUHr27Ml5551HXl4eCxYsoF+/fiX7mjpn+MRzsBIpXjVtUoLCQnjuOce5b9wIvXrBQw9BGP9fqURaOfx4Fj/wl0Zes2YNjz32GF9++SW1a9dm8ODB7N2796B9qlWrVvI+lGyxTwQtGtLGhYWFrFixghNOOIEPP/yQTz/9lAULFpCVlUX37t0D2hmsX926dVm2bBnvvPMOkyZNYsaMGYwbN4569eolRAY6nYjnYCUapLxAmSrMng0jRsDq1XDqqfDqq9C9e6Itiykxi+GLSCsRWeL32iEit8XqfJC44gc7duzgsMMO4/DDD+eXX37hvffei/o5unXrxvTpTr3P5cuX880335S7z/79+7nnnnto2bIlbdq0Yfv27RxxxBFkZWWxcuVKvvrqK8AJ+8CBkXmwfps3b0ZVGTBgAGPGjOHrr7+mTp06HH300cyaNQtwJoCXLl0KEFLe2ShNpa3U5KGQedTn5ebNg27doG9fEHEc//z5ae/sIYYOX1VXq2q2qmYDJwF7gFmxOh9408uOBSeeeCJt2rShdevWXHnllXTr1i3q57j11lvJzc2lTZs23H///bRp0yZoVaxBgwbRoUMH2rdvz/79+0vq6Pbs2ZM9e/bQpk0b7r33Xk455ZSSfa677jo6dOjAlVdeGbTfzz//zBlnnEF2djbXXHMNDz30EACvvPIKTz31VEmo6c033wTg8ssv56GHHrJJWw9UykpNy6bDG0NLFTLnjaGlnP69s5dz+6tLolOUfOVKJ2Rz+ulOFs6//gXLl0Pv3o7jrwTERR5ZRM4DRqlqSE8YDXnkVJn4CpfCwkIKCwupUaMGa9as4bzzzmPNmjUlo/NUxOSRD1A2hg/OYCWt5QUmtnOdfRlqNYHbVzB7cS63v7qEQB4qLNnkDRtg1CiYMgUOOwyGD4ehQ6FmzUisTxqSUR75MiBgqScRGQIMAWjatGnEJ0r52GIQdu3aRY8ePSgsLERV+ec//5nSzt4oTVpNhHpEt28g0Lja1z7hvdUBnT14DHVt2wY5OfD441BcDLfdBn/5C9QNXjc33Ym5xxCRakAvYESg7ar6NPA0OCP8WNuTqtSuXZtFixYl2gwjhqTrYCUYv1KPBmwO0h7aqYcMde3dC3//u5Ntk5cHgwfDAw9As2ZRsDq1icfCqwuBr1X11zicyzCMJMZ/Avah/QPYo9VKbd+j1Xh4/wAguFMXCDwvV1TkhG2OPx6GDYOuXWHxYnj+eXP2LvFw+JcTJJxjGEbloazo2pzi7gwvuL5UIfPhBdez8PBzgcBJGAJc0bVp6SchVXjzTejYEa65Bho0gLlz4e23nbYo2B3r1fvxIqYhHRE5BDgX+GMsz2MYRvITaK3BnOLuzNl/IB0yKzODh93Ru6d5jQUL4J574NNP4bjjHDmE/v2jlnWTSgvivBBTh6+qu4HKO0NiGEYJoWLyAgEdetB5jVWrYORImDkTjjoKnnwSrrsOMjOjanOqLYgrj7QTT4sm0ZBHBnj22WfZtGlTwG2DBw+mefPmdOzYkeOPP56rrrqKjRs3lnvMRx55JOAq2UiYO3cuCxYsiOoxDcNHsJh8o9pZ/OBVOG3jRvjjH6FdO3j/fRgzBtauhRtvjLqzh/RbEGcOPwQ+eeQlS5Zw4403cvvtt5d89pdJKI9QDh8c3ZqlS5eyatUq2rdvz9lnn01BwcHVg/wxh2+kGhEtjNy+3RnRt2zpaN/86U/w/feOhPGhh8bI4vRbEJd+Dt/DUu1oMHXqVLp06UJ2djZ/+tOfKC4uDigf/Oqrr7JkyRIGDRpU7pNBlSpVuOuuuzjiiCN4//33AQLKLk+cOJHffvuN008/nXPOOSdoP4Bhw4bRpk0bOnToUCK+9uuvv9K3b186d+5Mly5dWLBgAevWrWPy5MlMmDCB7OzsEllmw4gWfTo14uG+7T0XSQFg3z549FFo0cJJs7z0Uiec8/jjUL9+zG1O1Or9mOEr4JEMr5NOOknL8s033xzUFpSlr6qOPUp11OEHXmOPctojZNSoUTphwgRVVV2+fLn27t1bCwoKVFX1hhtu0BdffFEXLFigF1xwQck+27ZtU1XVbt266eLFiwMe94orrtBZs2aVarv55pv1b3/7m6qqbt26VVVVCwoKtHv37rpy5UpVVW3UqFHJ8YP127Rpk7Zp00aLi4tL2TNw4ED973//q6qqP/zwg7Zt21ZVVUeOHKkTJ06s0PWpCGH9bo3UZemrqo+0VR1Vy/np5f+xqEj1hRdUmzVTBdVzz1VdtCjmpgZi1tcb9LSHP9Jj7nlTT3v4I5319YaE2BEMYKF69LHptVTzozFQUCa2VpDvtHcYGLXTfPjhh3z11Vcl8sj5+fk0adKE888//yD54IqgfnIXXmSXg/Xr3bs3VapU4YYbbqBnz55cfPHFJfb7l13ctm0b+fmpGZM0khyfXo7v/9KnlwOB/ydV4b33HPmDpUuhUydH8+bcc+NncxnSaUFcejn87RvCa68gqsq1117LAw88cNC2svLBTz/9dNjHX7JkCT179vQsuxysX2ZmJgsXLuSDDz7gtdde48knn+T9998vKbASzjyEkeIsm+4MfLZvgFqNocd9UR0EBSWcQdjChXD33U7B8GOPhZdfhoEDIUj50FCkq6ZWpKRXDL9W4/DaK8g555zD9OnT2eJWsd+6dSs//fRTQPlg8C4TrKpMnDiRrVu3cu6554aUXfY/ZrB+O3fuZMeOHVx88cVMnDiRxYsXl9g/adKkkmP5tOxNzjixxGyBjwdVypjhZRC2Zg0MGgQnn+yoVz72GHz7LVx2WYWdvf8Cr4gUNtOM9Brh97iv9OMjQGaW0x5F2rdvz6hRozjnnHMoLi4mMzOTp556ioyMDK677jpUFRFh3LhxAFxzzTVcf/31ZGVlBRxZ33777YwaNYr8/HxOPfVU5s6dS2ZmZinZ5WbNmpWSXR4yZAjnnHMOTZo04YMPPgjYb/v27fTt25d9+/ZRXFzMI488AsCkSZO46aabeO6550pKMk6aNInevXszYMAAZs6cyaRJkzjttNOiet2M4FRkgY/nUWwUQp0VHjHXahxEEbMx/Pqrk1b59NNQrRrcd59TT/bwwz3ZFIx0y52PJnGRR/ZKNOSRE/boaoSNySMfoFvOXHID5Hb7ZIDLOtyzWtdnxqJcb3LKo2tDQN1JgdF55doWkXRz2Rg+QHF1+O0MmPauk4UzZIiTXtmgQbm2eKH58LeCfVt+yOl5UHuqh3+SUR45fnQYaA7eSDlCLfAJNPp/ccFPBzm1oKPYUKNsD0Q0Yvb9L340Bv73M6ysCZ/sgW0zYMAAePBBRxIhijSsnRXw5hkodz7dpBPKI71i+IaRooRa4BPI4YalE9/jPie06U8Yoc5AzjPouQLRrj8cfS+8VA9mbYKOJ8IXXzi6N1F29hBe7nyom1k6khIOP5nCTkZ0sN9paUI5qXCW8Qe8cXQYCJc87lSSQpyflzzu6Ul49uLcgEVKgp6rLB9+6EzGXn65syL2nXccJcsuXcrft4KEs8Ar3aQTyiPpQzo1atRg69at1K1bF6kkdSfTHVVl69at1KhRI9GmJA2hlCEnvLc64ChbKD3SD7kCtIKhzmBVp4Jq0vv4+msnl/6DDxwt+hdegN//vkJZNxXBa+58OOGfdCDpHX7jxo3ZsGEDmzcfXBnHSF1q1KhB48bRTZf1TJJO7AdzUsPObxVw0rTfSY34eNXmg24QvknIzjs+YES11ziKLUgFv2ewka4SJMbt07d56SU44gh45BFH96Z69bDOGy+CXduUlU4oh6R3+JmZmTRv3jzRZhjpQrgrPxNE2cyRYM490H4jZi7n3KL/8HDmZGriajdV8HsGGwE3KjsC3rwZxo51ZIqrVoW//IUH2vRkyoo8ikZ9SIYIl5/ShLF92ns+dzyobLWEkz4t0zCiysR2QTJWmsDtK+JvTwAiSYP0pXfOqzaUxlW2HNwhzO8ZyhaAv89ZwkUfvswfv5pFzYK9yHXXwahR3PvV/5i24KeDjje4a9Okc/qpTjhpmSkxaWsYUSNO8huREEnmiC8E01ACOHsI+3sGmwCVggKWjMzh5QmDuWPei8xr2oGeQ55i9k2joFEjXv4iwE0VgrZXKuKk6BuIpA/pGEZUiTAnPSqUM4cQSeaILwSzUevROJDTr8D3LDW3oAozZvDTjbfRe2suXzZuwx8vHcnXjZwFdL7c/KIgkYNg7ZWGBIcUbYRvVC4izEmPGA+6NpEU3fCld44vHMgeLSOOF+n3/OQT6NoVBgwgXzK4rt9fGfj7cSXOHg7clDKCZNQFaw9EOhUPLyGUzEUcMIdvVC4iyEmPCh7+4SMpuuELwSw6/FxGFFzPJuqjkX7PZcugZ0846yynxOBzz3H97ZP5qOUpBxUL992ULj+lScBDBWsvS9oKoCU4pGghHaPykUj5DQ//8JFmjhwIwZwNPFxxW3/80UmxnDYNatWCcePg1lshK4s7g0zm+m5KvonZl7/4mSLVsLN00lYALcEhRXP4hhFPPP7DJ7ToxtatjsbNpEnOCH7YMGcRVZ06peyD0DelsX3aVzgjJ21XwMZJ0TcY5vANI54k+B8+JHv2OFr0OTmwaxdcfTWMHg1NAodhYnlTStsVsP5icglY+GcO3zDiSYL/4QNSWAjPPec4940b4ZJLnILh7dolzKS0XgGbwJCiOXzDiDfJIuGtCv/+N4wYAatWwamnwiuvwOmnJ9qySrcCNl6YwzeMysi8eU792P/+F1q3hlmzoHfvg7JuyhLPYiHpVDw8WbC0TMOoTKxcCb16OaP49eud8oLLl0OfPp6cfVqmSlYibIRvGJWBDRtg1CiYMsXRpX/wQbjtNqhZM2D3QCP5VEuVTPXShbHAHL5hpDPbtjlZN48/DsXFMHQojBwJ9eoBgZ0iELDsX1ln7yOSVMlYOeXKVrrQK+bwjaTGRmkVZO9e+PvfnWybvDwYPBjGjIFjjinpEswpVq9aJeBIPkMkoBZORVMlY+mUU+1pJF5YDN9IWixmXAGKipywzfHHOwumunaFxYvh+edLOXsI7hTz8gsCH1q1wpIPgYhlPdm0XbgVIZ4cvojUFJG/isi/3M/HicjFHvarLSKvi8gqEflWRE6N1GCj8hDvAtMRiXUlUPIWcFIs33oLsrPhmmvgqKOc2rFvvw0dOwbcJVzn55NG9lIr1guxdMqRCNClM15DOs8BiwCfw84FXgPeLGe/x4B3VbW/iFQDAs8QGUYA4jlKiyi8kOgqWgsWwD33wKefQsuWMH069O9fbtZNw9pZnLTjA+6uOp2GsoWNWo/xhQP5rMZZ7C0oDrjoKZqpkrFcTZvWC7ciwGtIp4WqjgcKAFR1DwQtZg+AiNQCzgCecffZr6p5EdhqVDLKG6VFUz43oqeJREnerl4N/fo5C6ZWr3a0b775BgYMKNfZA/z5yMXkZE6mcZUtVBFoXGUL4zIn83T2D2GN5Cv6e4hEFbQ8ghVuqczxe/A+wt8vIlk4tYsRkRbAvnL2aQ5sBp4TkY44Twh/VtXd/p1EZAgwBKBp06ZhmG6kO6FGadGe8As00gzVXop4S97+8gvcfz9MngxZWc77O+5w0i09MntxLt1+/Ac1ZX+p9izZz8nrnuDkXn/0dB0j+T3EejWtLdw6GE81bUXkXOBeoA3wPtANuFpVPwmxT2dgAdBNVb8QkceAHar612D7WE1boyzBsnR8tVvL0qh2FvOHnx2EMT7aAAAgAElEQVT2eVqMeDtgBkqGCOsevij0zvGqk7t9O0yYABMnQkEB3Hgj3HsvHHlk2IfqljOXz/IvpUqAB4FihBZ7X/TkgIP9HjJEKFa1zKo4EE5N23JH+CIiwCqgL9AVJ5TzZ1UNUjSzhA3ABlX9wv38OjDci1GG4SPYKC3a8f2ISvLFWgFz3z548kkYO9aRLr7sMud9ixYVPuTGvHw2VgtcBnFjcd1SWVEQfLQe7Hr7rpvlvycX5cbw1XkEeFtVt6rqW6r6pgdnj6puAn4WEV9ArgfwTWTmGoZDtLMwGgXZL1h7KSKoohUy/l1c7BQfadUKbr8dOnWCRYvg5Zcr7Ox951MIWAZxj1ZjfOEBu8ubx/ByvWOZWWWEh9cY/tcicrKqfhXm8W8FXnQzdL4Hrglzf6OSUt6Cq2hnYUR8vAooYAaNf6vSZ/NKJ/Nm6VLH0f/rX3DuuZ6PG+jalT3fnOLuUICbpbOVjVqX8YUDnXY/Qj01+a7buUX/OSjbx/84lT3/PVnw6vBPAa4QkR+B3ThhHVXVDqF2UtUlgKfYkmH48DIR6GXCL5xVuomQ4w2UGdTyp1U0HvgXWLeY3Y2aMn7QSF5odgpHL8pgWL3ccu0Jde3Knq9XlXklTvo3qc8kuZw5xV0POmbtmpl0y5kb8Lr06dSIRj+/SbuvnyHLzeNoLFvIyZwMBZQ4/cqe/54seJ20bRaoXVV/jKYxNmlrQPCJwHAmZMs6PnBG7MmUmtd8+Fv4/vuabdvIsE9f4OJVn7E163Byb72LwRnZ7Cg+EHX1Yn+oa7fRXbEMjrPPyZxcKkunMKMGwwuu5/X9p5W0ZWYIKBQUH/ATB9kRZNJ6Q3E9uu9/POmue7oRzqStpzx817HXBi5xX7Wj7ewNw0c0JmTjvUq3IjSsnUW93dsY8/6TfDj5Js5a9xWPnXY5l909jZvqdCvl7MGb/aGunf8o++6q0w9KyaxatJcxh8wolbveP/O/fFz1Vr6v/nvmVRtKryrzDrYjSPppQ9lq+e9JhqeQjoj8GbgBmOk2TRORp1X1iZhZZlRaorECM+m1VHbu5Jkf3qTJc09SvXA/r3Q8n8e6/Z5dderxcO/23P7qkoC7lWd/qGvnP0/RMEB2DkDN/E3MH+0+RS2bzp4ZT1GzinNj8A/VvJHnF+cPUpi9Su3GzL89/BRZI3Z4XWl7HXCKqt6nqvfhpGfeEDuzjMpMNFZgJoOWSsAMnP37HRXLFi1o/fRE8n53DoNvf5a/nn8z1Ro3LBkNV9T+UNfOf/XpRq0X+AC1Gh94/9GYg54Casp+J+7vb0eP+5w0VH+SpTC7UQqvk7YC+D8fF1GOtIJhVJRoTKAmWkul7BzCxm27+fSBv3POVy9z6IYf4cwzYfx4GnXpwitRtL+8a1eyrmHZw+WvHQgRqillRzIWZjcC4nXS9g7gKmCW29QHmKKqj0bTGJu0NaJJIrX0/SdPT1u/hOH/mUKHTWtZ26A5LZ/5O1x4YeLrxy6bHtpJB5mM3ZN1NDXvWRU9O4yICGfS1pPDdw96IuAL3H2mqosraF9QzOEb6ULz4W/R5td13PPJFM5Yv5gNh9fn/07/A3PanMm68b2idp6Y3hTKqoCC8xTgcVGZER+iKq3gHrArsFJVv3Y/Hy4ip/jJJhiG4eOHH/jnuxM5b+lHbKtxGA+cfT3TOl3EvqrVvK3c9UisKkYduIkcwlWH/pG7s16lZv4m9mQ1YHzBIKa+dAgN355rGjkpiNcY/pPAiX6fdwVoM4zKzebNTnHwf/yDszMy+Odpg/h7l77srH4IEP05hFiU8St7E5myqwuvZp5Kv5MaMWNRrtWITXE8T9qqX+xHVYtFxOrhGgbA7t2OguX48c77666j6ujRHPWrcvh7q9kVpXBL2fBNMOnmSFJPg91EXv7i54OE5KxGbOrh1Wl/LyJDcUb1AH/C0cYxjMpLQQE884yjR79pE1x6qTPCP+EEAPo0jN7oN1D4RoBAM3CRpJ6Wp37ptb+RnHjNw78ROA2ntGEujrbOkFgZZRhJjSq8/jq0bQs33eSUFfz8c5g5s8TZh0t5VaMCjbyVg3OjIw0bBbtZZATJKDKNnNTC0whfVX8DLouxLYaRVATMgNm+xlGx/PJLx+G/8Qb07OmppGCo85Q3+RpsJK1AnZqZbNtTAED1ql7HcIEJlv9fNobva6/sNWJTjZB/HSJyg4gc574XEXlWRLaLyDI3TdMw0hKfE851BccO++4b6gy8FM46CzZudEI5S5fCxRdH5OzBm+5PsJF0nZqZ7C0oLvmcl1/AiJnLK1zfN1gt2LF92ie2Ruyy6c66gNG1nZ/LpsfnvGlGeSP8PwNT3PeXAx2BY4FOwGPA6TGzzDCiTDg56z4n3Gj7b9w+70X6rpjLzuo1mXThEG6e8ahTSzZKeNH9CTbyViXqmTrBqowlrEZs2fUA2392PoOtBwiT8p7/ClW1wH1/MfC8W/nqQ+CQ2JpmGNGj7IjdFzYJNhLe88uvjJw7mbn/GsIl337K06f05fQbn+FvHXpF1dmDN92fYCPv7fkFAfdNq8nUj8aUXvwFzuePxiTGnhSmvBF+sYgcDWzDKVH4oN82m60xUgbPOev5+fDYY3z69Fhq7stnRruzmdj9Cn45vD7gseRhOZR90jirdX1P8fFAI+wJ762OWFk06Qmi6RO03QhKeQ7/PmAhkAHMUdWVACJyJpaWaaQQ5YZNCgth6lQYNQpyc9l9+jlccUI/ltVpUtI3GpOUgSZoZyzKpd9Jjfh41eawJRISLRIXF4LIL5dS9jQ8EdLhq+qbbrWrw1R1m9+mhcCgmFpmGFEkqE58rRrw73/DiBHw7bfQtSu89BINzjiDaz3E/MPVsgn2pPHxqs2eq3n5k4jSjHGnx33lK3sanig3LVNVC3FCOv5tu0WkAY7EgmEkPYFGwqdtWsUT770KS76C44+HGTOcxVMinhx5RbRsYlGYJZLJ1EQqinrG5JejRiTyCM8APaNliGHEEv+RcM21q/nrf6dxxjefw9FHwz//CddeC1Wdf4dAjnzYa0u5/42V5O0pKHGMFdGyiUY1r/Lw6sRjJb4WEzoMNAcfBSq8SkNVzdkbsSMGedd96ivz177EB8/dwhkbVjgyCGvWwJAhJc4eAoddCoqVbXsKSmX4+Bx3ryrzmFdtaEnd1847PghqQ6CKVAC79xVWOHfen3CykVKh7q8RXbzKI7cANqjqPhH5HdABJ0UzL5bGGZWUaOdd5+VBTg489hgUF8PQobx9ybU8+OVmNj7wyUGjYC/hlfyCIjJE6CmfkZM5uaQUYGPZQk61Z2BZp4C2+s4xctZydu8/4Gx9C6Z8jJ6zkjw35bJOzUx6djja06RuOE8dG/Py6VVlnlOyULawUesxvnBg6Xq1RlrhdYQ/AygSkZbA00AT4KWYWWVUbqKVd713L/ztb3DssY6SZb9+sHo1s6+8izs/zg06CvYaXilS5Z7M6QfVfc1iX7m2+jt7H/kFRYyes5Jhry0tcfYA2/YUMG3BT55G7eHMEVx16JfkZE6mcZUtVBFoXMUpUn7VoV+GtN1IXbw6/GJ38vZS4AlVHQYcHTuzjEpNpHnXRUVOiuXxx8OwYXDKKfD11zBtGhxzTLmhjGBhl7LUqZnJ0bI1bFtHz1kZdFtefgEFxeVXoQsWegmn+Pndma8GLFI+pHBaUBE3I7Xx6vALRORynLq2b7ptmbExyajs7MlqEFZ7Carw1luQnQ1XXw1HHQUffQTvvOO0uZQ3Ci67qrV2ViaZGaX1cjIzhF17C9lYXDewLcFyxJdN582im0ri/b2qzAv9nUIQ6HsEulkFy8uvmb8p4HEb6FZPq5GN1MOrw78GOBV4UFV/EJHmwAuxMysyypOaNZKb8QWD2KPVSrXt0WqMLwix9GPBAvjd7xwxs/x8eOUVR9Hy7INz271KGcwffjY/5PRkyajzmNC/YylZg0OqVaWgWBlfOPAgW4PmiLtzE2VDKP5Ov05N7+OoQN8jmARDwKybIDeljXrgJmaTuOmFV3nkb4ChACJSB2ch1rhYGlZRUirVzAjI1F1d+F+V/e5k4lY2al1nMnFfF0aX7bx6NYwc6eTQH3kkTJoEN9wAmcEdZ0VWp5bNdW8+/C0A5hR3hwJK2dr4kocDTy4HmJuoKc73nLO/O4dUy2DUJW0Z9trScsM6oez1nJcfYEHTHq3G+MLStqeVLk8lx2uWzidAL7f/IuA3EZmvqnfE0LYKEYs6n0Z8aVg7izl53Zmzv3S2SCkdm19+cSpNTZ7siJmNHg133gmHHlru8aOxOtU/n35O8QFbG9XOYn6HICtmg8T1G8pWMjOEBy89MBKvaJZOWJRZ0LSJejxUMMC5iZX5rkZ64HXhVS1V3SEi1+OkY44SkWWxNKyixGIloxFfQo7At2+HCRNg4kSK9+/nlZMu5v+6DGBrfm3qPPI5oy5p68kRRir1WyENmyCaML9JPSb071hiT1xliP0WNC1YnMsHM5dDcRrr8lRyvDr8qq5q5kBgZAztiZh4rGRMdxK93D7QCPyes46h16evw7kPwNatbDi/N1c1v4R1tQ5M5G7bU8Cw15eWOkY8bSz3OgXRhGlwyUP06ZD4p89KoctTyRENUpy4VCeRAcBfgfmqepOIHAtMUNV+5ey3HtgJFOFo63cO1b9z5866cOFCr7YHpGwMH5xRSlyr86QwFbl+Mb1BFBfDyy/DvffC+vXQoweMG0e3D7YHvLGDG1bxIESWkBvbsummCWNEFRFZVJ5v9eF10vY14DW/z98DIZ29H2ep6haPfSPGRimREe4cSMwmyVXh/fed+rFLl0KnTvD003DuuQBsfO2toLt6Cd8lbHLfNGGMBOJ10vZ44EngKFVtJyIdgF6qOjam1lWQhJViSyGCjW7DnQOJyST5woWOo587F5o3hxdfhMsugyoHsoiDhe5828oj1pP7iQ6LGUYgvObh/wsYARQAqOoy4DIP+ynwvogsEpEhFTPRiDahBLbCWakJUZ4kX7sWBg2Ck0+GZcvg0Ucdjfrf/76Uswdn0jSzysHFwzMzxNMkYywn98Mtp2gY8cKrw6+pqmUFNgo97NddVU8ELgRuFpEzynYQkSEislBEFm7evNmjOUYkhBrdhrNSE8Jbyh+UX3+FW26BE06AN9+Ev/4V1q2DP/8ZqlcPuEufTo2YMKAjtbMO5NvXqZlZKtslFFGxOwimQmkkK16zdLa4ipkKICL9gV/K20lVc92fv4nILKAL8GmZPk/jCLLRuXPn8meQjYgJNboNdw4kohJ7O3fC//2f88rPdxZM3Xefo1HvgUhCd7EsDWipwUay4tXh34zjlFuLSC7wAzA41A4icghQRVV3uu/PA6zMfBJQXupqOI60QpPk+/c7E7BjxsDmzY6K5UMPOWJncSKWk/uWGmwkK57SMks6+zlxD32PBWa5H6sCL6nqg6H2iUZaplE+CUtdLS6G115zpBDWrYMzz4Rx4xw1yzQi0PXNzBAOqVaV7fkFNolrRJWop2WKSHWcNMxjcBZhAaCqQUfsbupmRy/HN+JLQlJXP/rIybxZtAjat4e334YLLgA5eOI1VfHPzKmVlUmNzCrk7Smgds1Mdu0tLJFKMH0nI1F4Den8G9iOo6OzL3bmGPEibqmrixfD8OFOTn3Tpo5O/RVXQEb5evOpRNlRfV5+AVmZGUwclM2E91azbU9Bqf6m72QkAq8Ov7GqXhBTS4z04ocfnGybF1+EOnWcylM33ww1aoTeL0VXoobKzLFJXCNZ8JqW+bmItI+pJUZ6sGUL3HYbtGrlSBYPHw7ff+8oWXpx9m8MdQXG9EAt2ygUMI8ZbrH1z/IvDVjQxBcyC4RN4hrxxusIvztwtYj8gBPSEUBVtUPMLDMCkrQrOHfvdhZKjRvnvL/2WkeyuFEYtoWqZZuMo3y/YutVxC1gnjkZCiiRGPb9jqKVApq0v38jJfDq8C+MqRWGJ5KhuEtZh3P32cfS++t3HW36TZugTx8nxfKEE8I/eKS1bONNOQVNfE49WpPk985ezosLfsKXV2eTv0a4hHT4InK4qu7AUbw0Ekyii7uUuuGo0v6LD+kw4Xn4Xy507+6EcE47reInCKIXH7Q+bKIJUdCkURmnHukk+ezFuaWcvQ+b/DXCobwR/kvAxTjZOYoTyvGhwLExsssIQKIn/3w3nC4/r2DEx8/R6ZfVfFe3KXdf+QDjp4yMPMUyiF58wPqwyUCQG9Temg2Yf0/58szhMOG91Qc5ex82+Wt4JeSkrape7P5srqrHuj99L3P2cSbRk3+HrvmWya/fz/SXhnPUrq0Mu/DPXHDtE0w/uhPdxn0cuThYh4FwyeNQqwkgzs9LHk/O+D1Aj/sozCg9Eb1Hq3Hf7n5RF0oL5dRt8tfwitcYPiLSF2fyVoHPVHV2zKwyAhJL/ZeQ/PQTjBrFO1OnsrNaTXLOvJrnTrqEfZkHhM2iFk9OJb34DgMZO2cl1xdPK1VsfU7xafw3ymGWYHINAlaC0PCM15W2/wBaAi+7TTeKyLmqenPMLDMOIu4rZP/3P3j4YXjiCQDWDR7CH47swaaqNQN2rwzx5LKT1rm7ujCFLgf1i3aYJdDNXoArujZN6+ttRBevI/yzgRPUFd4RkanAyphZlS7EYBFRn4z59Kk+BmpsgOqNIeM+nFLDUbQtPx8ef9xx9jt2wFVXwZgxrNxShX1vrIQyq0b9Sed4cqAsKYGAsfVoh1mskpsRDbw6/LVAU+BH93MTt80Ihl+ONnBgERFU3OlH65jBjlNYBEvyHYni3Fzo2dNx+u3bBxQEC4S/o0u3nPFAWVK+TAZ/px+rMJtVcjMixavDPwz4VkR8RVBOBhaKyBwAVe0VC+NSmlgsIorWMcseRxVW7IAnroFf9znqlS++6KhZugRydmXxd3TJsGYg2gR7elGcwumR3NjS7eZoJCdeHX6S5sUlMdFaROQfegmWmBfuMf37/1QIH+6Dn4ugbhUnl/7SSw9KsQwVqhE4yEkles1ALAg2cdqodhbzh1c8DTPSm6PdLAyveHL4qvofEWmAU7FKga9UdVNMLUt1orGIqGzoJdS5wrVt7Xr4aB+sLoRDBXrWgN8dC337BtwlXGeX6DUDsaC8LKmKOt5Ibo7p+CRlxA5P4mkicj3wJdAX6A8sEJFrY2lYytPjPmfRkD/hLiIKFMIpS7jHzM2Fz46EJ3fDD4VwVnW49VA4tRacNyrobgmpdZtk9OnUiIf7tqdR7SwE52bnKxoTSeHySG6OVj/XCAevIZ1hQCdV3QogInWBz4FnY2VYyuOLqUeSpRMyVCPhHTMvzxE2e/RRKCqCKy6C49dB0SZPx4lrrdskJtjEaSSj9EhKIqbjk5QRO7w6/K2U1tPZ6bYZoYh0EVHQsFATuH2Ft2Ps3QuTJsGDDzpO//e/hwcegObNwzYn5rVuE0ikcfBIHG8kN0ern2uEQzhpmV+IyL9xYvi9gWUicgeAqj4SI/sqN5FoyxQVwbRpThGSn3+G88+HnBzIzo6dvWVIlTTCaMTBI3G8kdwc0/VJyogNXh3+Ovfl49/uz8Oia45RioqEhVThnXecwiPLl8NJJ8GUKXB2dMW8koVoZKhEI6MoUsdb0Ztjqj1JGYlF3MWzSUHnzp114cKFiTYjdfniC6dQ+H/+Ay1aOGGcAQOgitfCZrEhVmmDgRaD+RZBlZUnDkXz4W8FTHgV4Iecns4HD6umLT3SSAQiskhVO3vp61VLpz5wN9AWKJEHVNWUHzamxT/p6tUwcqSTQ3/kkfD3v8MNN0C1aom2LKZpg8FWvoZ7nnLDMR5XOKdKCMuovHgd+r0IrAKaA/cD64GvYmRT3IgklS4p+OUXuOkmaNsW3nvPKSm4bp1TLDwJnD3ENm2wvAlRr+cpN+U01Apnw0ghvDr8uqr6DFCgqv9R1WtxBNVSmpTNYd6xw5mMbdkSJk+GG2+EtWth1Cg49NBEW1eKWKYNRpK26E+o/Hog9UovGkYQvE7a+uQRfxGRnsBG4IjYmBQ/Ui6Hed8+eOopGDsWtmyBQYOc9y1bhn2oeIWyYpk2GGiitKLnCRmOSbXSi4YRBK8j/LEiUgu4E7gLmAzcHjOr4kTKrAYtLoaXXnIKg992G3ToAF99Ba+8UmFnH+1Q1r2zl9NixNscM/wtWox4m3tnO/HzcFfohoP/yBxK19+M5nmismraMJIAr1o6b7pvtwNnxc6c+JL0Ocyq8MEHTubNkiVODv2778J550VUPzbawmb3zl7OtAU/lXwuUi35PLZP+5Jzdt7xASOqvcZRbEE+cbX8I60P4Dcyj9lTSzRWTRtGEhAyLVNEniCoRCOo6tBoGpOItMykzdJZuNDJpf/oIzjmGCfF8rLLopJi6SkNMQxajHibogB/RxkirHv4IudDACG4fKqz4sQHOLnXH8M+p2EYDtFMy/T3vvcDwdW1UpSkS6VbuxbuvRdefRXq1YPHHoM//hGqVy9/X49EO64eyNkf1B4g0yWLfTRcNJ7ZTS5O6O8gaW/6hhFlQjp8VZ3qey8it/l/NqLMr786Gjf//KeTUjlyJNx9Nxx+eMDukTipaIeyMkSCjvBLCJLRcjRbE6qRb/LCRmUinPhA8izJTSd27nTy51u0cDJwrr/eGeWPHRvS2Ucy6VpuGmKYXH5Kk/Lbg2S0bNS6Cc2KStnUXMOoAF7TMg2i/Oi/fz/8618wZgz89hv07+84+VYHj7LLnnf3vsKIJ12jGcryTcy+/MXPFKmSIcLlpzQpaQegx33kz7yFLPaVNO3RaowvHJjQrKiUS801jAgI6fBFZCcHRvY1RWSHbxOgqhp4CFr6GBk4cwG5qnpxJMYmkqg9+hcXw2uvOSGbdeucurFz5jh1ZD2eNxiJdFJj+7Qv7eDL0mEgK9Zvo+Gi8RzNVjZqXcYXDuSDjDN5OIFZUSYvbFQmyovhR0MN88/At0C5N4dkpiKpjGVH5uNqb6b75AmwaBG0bw9vvQUXXhgyxdJL8XAfye6kTu71R2Y3ubjUNXk4wROkSZ+aaxhRJKYhHRFpDPQEHgTuiOW5Yk24j/7+I/M2v37PPdOn0P2Hr9nToBE1p0yBwYMhIyPgvl6OX5agTsqDymM8SbasKJMXNioTsY7hP4qjshn0SUFEhgBDAJo2bRpjcypOuI/+E95bTd0tG7nz0xe49JtPyKtxKGPPupaPzhrAx1ddEPF569TMpGa1qqGdlEeVx8pOst2EDCNWxMzhi8jFwG+qukhEfhesn6o+DTwNzsKrWNkTKWE9+m/ZwrUzHmfw4rdQqcI/uvbnqVP6s6PGochub+GZ8s476pK25TupUCqP5vANo9IRyxF+N6CXiFyEo6F/uIhMU9XBMTxnzPD06L97t1MkfNw4rt61m+ntz+HR7r/n18PqlXQJN84e7LwA3XLmhh7hm8qjYRh+xKXilTvCv6u8LJ2UrXhVWAjPPuvk0//yC/TuzYd/uI1bl+w9aGQeSb67j0CVngIee2K7yIugG4aR1IQjrZDY2nepjirMnAnt2jnyB8ceC/Pnw+zZnNPvd1Fd3OSP58VCpvJoGIYfcVl4paqfAJ/E41xx47PPHOmDBQugTRuYPRt69SqVYhmrycBgmTu5efk0H/6WX4inYiqPaastk2QZS4YRb2ylbbisWAEjRsCbb0KjRvDMM3DllVA1fpcyWOYOUEpqAXCcfhhOLW21ZVIoYyltb7hGwrGQjld++gmuucYpPvLZZ5CTA2vWwLXXxtXZQ+CiImWpqB5M2mrLpEhd2pSvs2wkNebwy+N//4Nhw+D4452qU3fcAd9/7xQlyUrMytay4mfBqIjUQtpqy6RIxlLa3nCNpMBCOsHIz4cnnoCHH4bt2+EPf3CEzpo1S7RlQOn5gW45c6OmB5O22jIpUpc2bW+4RlJgI/yyFBU5KZbHHeeM4rt1g6VLYerUpHH2ZYlm3dhY1qBNKCmSsZQydZaNlMQcvg9VR7WyQwe47jpo3Bg++cSZnG0fQgUySsxenEu3nLk0H/4W3XLmhhWzDaRv//zJP9Lnk/NhdG0nH3/Z9AofK1rppAmlw0C45HFnDQLi/Lzk8aSbsE3bG66RFMRl4ZVXErbwav58ZzQ/f74Tq3/oIejbN6JC4eHgeSGVVwLUjyUzKykdnHEwlqVjhEM4C68qt8P/9lv4y1+cHPoGDZyVstdeC5mZ8bOB4DH4RrWzmD/87FJtgZwBlJZe+ED+RM38Xw4+USxW2Fpuu2EklGgWMU9PcnMd5/7ss3DIIU4t2dtvd94nAK8TdYFy5Ie9thQECoq0pK1G9U0ETN+JdkZKCuW2G4ZR2WL4eXnOoqmWLZ1J2FtvdapO3Xtvwpw9eJ+oC5SyV1CsJc7ex0atG/hE0c5ISZHcdsMwHCqHw9+7Fx55xCkUnpMD/frB6tWOsmX9+qW6RjJ5WlG8TtR5Tc0bXziQPVqtdGMsMlJSJLfdMAyH9Hb4RUXw/PNOYfA774STT4avv4Zp06B584O6x2KVo5cbSJ9Ojeh3UiMy3EniDBH6nXSwDo/X1Lw5xd0Zn/mn2GekBHtiSLLcdsMwHNLT4avC229Dp05w1VXOKP7DD+Hdd522IER7laPXG8jsxbnMWJRLkTuBXqTKjEW5B/Ubdn4rMquUDs5XATIzSrdlZWaQ3XOIM0E7Os/5GYuYegJz2xPxJGYYqU76Ofwvv4Szz4aePWHPHnjlFaetR49yd432KkevN5CwbjRlJmMzMoRBJzdJTN58gnLbTW/GMCpG+mTpfPcdjBwJr78ORx7pyCIMGQLVqpW/r0u0ZQW83kC89pvw3uqDJmgLipSPV20+KH0zbnQIT40zGoS6QVq+umEEJ31G+M8+64RsRo+GtWvhllvCcvYQ/VWOXrNvvPYznRUHuw6GUTHSx+GPGOE4+lGj4LDDKnSIaMsKeL2BeO1nOnab34MAAA0xSURBVCsOdh0Mo2KkT0inVi3nFSHRrFLlqfB5GP2Gnd8qoARDtHRWUmVJf6yvg2GkK5VbWiEFiZVTjrqeT4xJlZuTYcQa09IxwiYcPR/DMJKHcBx++sTwjYiwiVDDSH/M4RuATYQaRmXAHL4BWOENw6gMpE+WjhERXjOFDMNIXczhGyVEMyXVMIzkw0I6hmEYlQRz+IZhGJUEc/iGYRiVBHP4hmEYlQRz+IZhGJUEc/iGYRiVhJg5fBGpISJfishSEVkpIvfH6lyGYRhG+cQyD38fcLaq7hKRTGCeiLyjqgtieE7DMAwjCDFz+OrIcO5yP2a6r+SR5jQMw6hkxDSGLyIZIrIE+A34QFW/CNBniIgsFJGFmzdvjqU5hmEYlZqYOnxVLVLVbKAx0EVE2gXo87SqdlbVzvXr14+lOYFZNh0mtoPRtZ2fy6bH3wbDMIw4EJcsHVXNAz4GLojH+TyzbDq8MRS2/wyo8/ONoeb0DcNIS2KZpVNfRGq777OAc4FVsTpfhfhoDBSUKfBRkO+0G4ZhpBmxzNI5GpgqIhk4N5bpqvpmDM8XPts3hNduGIaRwsQyS2cZ0ClWx48KtRq74ZwA7YZhGGlG5V5p2+M+yCxTwi8zy2k3DMNIMyq3w+8wEC55HGo1AcT5ecnjTrthGEaaYRWvOgw0B28YRqUgLRz+7MW5VovVMAyjHFLe4c9enMuImcvJLygCIDcvnxEzlwOY0zcMw/Aj5WP4E95bXeLsfeQXFDHhvdUJssgwDCM5SXmHvzEvP6x2wzCMykrKO/yGtbPCajcMw6ispLzDH3Z+K7IyM0q1ZWVmMOz8VgmyyDAMIzlJ+Ulb38SsZekYhmGEJuUdPjhO3xy8YRhGaFI+pGMYhmF4wxy+YRhGJcEcvmEYRiXBHL5hGEYlwRy+YRhGJcEcvmEYRiVBVDXRNpQgIpuBHyM4RD1gS5TMiQVmX+Qku41mX2SYfeHTTFXre+mYVA4/UkRkoap2TrQdwTD7IifZbTT7IsPsiy0W0jEMw6gkmMM3DMOoJKSbw3860QaUg9kXOcluo9kXGWZfDEmrGL5hGIYRnHQb4RuGYRhBMIdvGIZRSUgZhy8iF4jIahFZKyLDA2yvLiKvutu/EJFj/LaNcNtXi8j5CbLvDhH5RkSWichHItLMb1uRiCxxX3MSZN/VIrLZz47r/bZdJSJr3NdVCbJvop9t34lInt+2eFy/Z0XkNxFZEWS7iMjjrv3LROREv23xuH7l2XeFa9dyEflcRDr6bVvvti8RkYUJsu93IrLd7/d4n9+2kH8bcbJvmJ9tK9y/uSPcbTG/flFDVZP+BWQA64BjgWrAUqBNmT5/Ap5y318GvOq+b+P2rw40d4+TkQD7zgJquu9v8tnnft6VBNfvauDvAfY9Avje/VnHfV8n3vaV6X8r8Gy8rp97jjOAE4EVQbZfBLwDCNAV+CJe18+jfaf5zgtc6LPP/bweqJfg6/c74M1I/zZiZV+ZvpcAc+N5/aL1SpURfhdgrap+r6r7gVeA3mX69Aamuu9fB3qIiLjtr6jqPlX9AVjrHi+u9qnqx6q6x/24AGgcZRsisi8E5wMfqOr/VHUb8AFwQYLtuxx4Oco2hERVPwX+F6JLb+B5dVgA1BaRo4nP9SvXPlX93D0/xP/vz8v1C0Ykf7ueCdO+uP/9RYtUcfiNgJ/9Pm9w2wL2UdVCYDtQ1+O+8bDPn+twRoM+aojIQhFZICJ9omxbOPb1cx/7XxeRJmHuGw/7cENhzYG5fs2xvn5eCPYd4nH9wqXs358C74vIIhEZkiCbAE4VkaUi8o6ItHXbkur6iUhNnBv2DL/mZLl+5ZIWJQ5TCREZDHQGzvRrbqaquSJyLDBXRJar6ro4m/YG8LKq7hORP+I8LZ0dZxu8cBnwuqoW+bUlw/VLCUTkLByH392vubt7/Y4EPhCRVe6IN558jfN73CUiFwGzgePibIMXLgHmq6r/00AyXD9PpMoIPxdo4ve5sdsWsI+IVAVqAVs97hsP+xCRc4CRQC9V3edrV9Vc9+f3wCdAp3jbp6pb/WyaDJzkdd942OfHZZR5nI7D9fNCsO8Qj+vnCRHpgPO77a2qW33tftfvN2AW0Q95louq7lDVXe77t4FMEalHEl0/l1B/fwm7fp5J9CSClxfOk8j3OI/yvombtmX63EzpSdvp7vu2lJ60/Z7oT9p6sa8TzuTTcWXa6wDV3ff1gDVEeVLKo31H+72/FFjgvj8C+MG1s477/oh42+f2a40zQSbxvH5+5zqG4JOOPSk9aftlvK6fR/ua4sxfnVam/RDgML/3nwMXJMC+Br7fK47D/Mm9lp7+NmJtn7u9Fk6c/5BEXL+ofMdEGxDGL+Mi4DvXaY5028bgjJYBagCvuX/UXwLH+u070t1vNXBhguz7EPgVWOK+5rjtpwHL3T/k5cB1CbLvYWCla8fHQGu/fa91r+ta4JpE2Od+Hg3klNkvXtfvZeAXoAAnjnwdcCNwo7tdgEmu/cuBznG+fuXZNxnY5vf3t9BtP9a9dkvd3//IBNl3i9/f3wL8bkyB/jbibZ/b52qcBBD//eJy/aL1MmkFwzCMSkKqxPANwzCMCDGHbxiGUUkwh28YhlFJMIdvGIZRSTCHbxiGUUkwh2+USxk1yiWxUiyMFyJymIj8U0TWicjXrizDte62liKSLyKLReRbcZRX/+C37/V+qqLf+vaLg829XFtXurY9VMHjHCMiL7rvO4vIedG11EhmTFrB8EK+qmYn2ogo8hzwDc4iuGJ3SfzVfttXq2oncG4AwCwRQVVfcLe/qKq3iUgDYIWIzFHVLdEyTkQy1E86wpVa/htwkaqudVeS31CRY6vqeuAK92NnoCXwfmQWG6mCjfCNCiMiJ7va6ktF5Et35FxDRJ5z9cEXu9otPr39mSLyrqsLP97vOJe7/VeIyDi/9l0iMsEd1X4oIl1E5BMR+V5Eerl9PhWRbL995omf1nsAm1sBHYHRqloMzpJ4VR0fqL+qrgXuBIYG2LYJZ+Vv0zLnuECcmgfvujruj7vKrYjIxa7I22IReVlEstz2TSLysIgsBnqVOdVw19617nkLVfVJd7++7rVf4p6vntueIyJT3CeUEh1+EWntPtEchrMg8Up330tFpJuI/Ne1bZ6ItAh2HY0UJdErv+yV/C+giAMrNJcAg3CWuX8PnOz2ORznifFOXK16HCmEn3BWQV/t9q/lfv4RRyOlodunvrv/XKCPu7/irozG0Sh5H8jEcdhL3PargEfd98fjriAN8V36Aq+F2N7Sd2y/tnrATvf99X7nawlsBmqX6X8BsBvnRlAV+A9wMY58wCdAlttvFHC3+34TMDSITd8ArYJsO4IDkgS3AA+673OAhTiSIkfh6M/Ud38nvlW2NwJ/8ztWLVzZEdfeFxP9t2ev6L4spGN44aCQjoi0B35R1a/AEb9y27sDT7htq0TkRxxHDPCRqm53+30DNMORsP5EVTe77S/iFKOYDewH3nX3XQ7sU9UCkf9v79xBo4qCMPz9SQgRFPEBoiiKhYooRCQEYqFgYyc+iIWgCWhjYWcVVLQxKoL4LiwESRHxgaA2CuIjiMYIJgRNIYj4wE4UhSA6FnPW3Gyym8TCZLPzwcJ97Dl37i3mzp05/KMeXPcEXE5jv6R9uITBpbHcmLyz0mZglpktKPS3vP3tktYB/cAuM/sydAgdZvYuXaMdV6eswRvyPEkBfzX+AsjRPhbbEwuBK5LmpPl7M+eumwvifZbUgQvivS0y10zgslx1VLjMQDCJiJRO8D/pz2z/YuQa0k8zy2l//M6NN0/FVKXtH3hTkY1AI9A2wpy9QK2kijT+cHqZzSgyZhXwKrPfZma1ZlZvZjcLjMnXLDHcid5OY2vNbLmZ7cn853sRm1cXOHceOGZmK/FOYDUj2FCMI3jXqRXAlry5gklAOPzgX+kD5kqqg78rX6qAR6SioKQleFqjr8g8z4C1kmZLqsS7CT0Yoy0XgVNApw10dRoWM+vDvxYO5Zy+pBqGRvGkc4uB46SvljGwRtL89Ewagcfpt16p37KkqakoPBJHgYPJFiRVynsWgKdhPqQawc68cZskVaeidAOuOZ/lGzAtsz+dAenhplHYFZQY4fCD0TBFg5dltpq3m9sGnJb0Eo+ya4BzQEVKu7QDTZbR/s/HzD7hRcn7uOJgV5GoudAcXcBXfPUNAJLqJV1I25Ua3Fy6Gc+nv0nH7+K1hxxLU+HyNd5S74QNrNAZFkkNks5mDj3FX0S9QDdwJ93rbuCqpG6gA68DDDffXknN6f6e48/oWkqF9TCgEX8AuAV0Ah/zpukFHqbrtOTSZhnuAXW5oi0e4Z+U9AL/AsvZskjSjWL3H5QGoZYZlDyS5uG58GUp3TOuSNqA5/a3jqMNrcB7MzszXjYEE4+I8IOSRtIOPJpumQjOPggmMhHhB0EQlAkR4QdBEJQJ4fCDIAjKhHD4QRAEZUI4/CAIgjIhHH4QBEGZ8AebfAHvyJ9wAQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Get model predictions for the trainint set.\n",
    "predictions_num = 100\n",
    "x_predictions = np.linspace(x_train.min(), x_train.max(), predictions_num).reshape(predictions_num, 1);\n",
    "y_predictions = linear_regression.predict(x_predictions)\n",
    "\n",
    "# Plot training data with predictions.\n",
    "plt.scatter(x_train, y_train, label='Training Dataset')\n",
    "plt.scatter(x_test, y_test, label='Test Dataset')\n",
    "plt.plot(x_predictions, y_predictions, 'r', label='Prediction')\n",
    "plt.xlabel('Economy..GDP.per.Capita.')\n",
    "plt.ylabel('Happiness.Score')\n",
    "plt.title('Countries Happines')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Calculate the value of cost function for the training and test data set. The less this value is, the better."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train cost: 3476.54\n",
      "Test cost: 247.28\n"
     ]
    }
   ],
   "source": [
    "train_cost = linear_regression.get_cost(x_train, y_train, regularization_param)\n",
    "test_cost = linear_regression.get_cost(x_test, y_test, regularization_param)\n",
    "\n",
    "print('Train cost: {:.2f}'.format(train_cost))\n",
    "print('Test cost: {:.2f}'.format(test_cost))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's now render the table of prediction values that our trained model does for unknown data (for test dataset). You should see that predicted happiness score should be quite similar to the known happiness score fron the test dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Economy GDP per Capita</th>\n",
       "      <th>Test Happiness Score</th>\n",
       "      <th>Predicted Happiness Score</th>\n",
       "      <th>Prediction Diff</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.482383</td>\n",
       "      <td>7.522</td>\n",
       "      <td>6.638892</td>\n",
       "      <td>0.883108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.487097</td>\n",
       "      <td>7.006</td>\n",
       "      <td>6.650641</td>\n",
       "      <td>0.355359</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.441634</td>\n",
       "      <td>6.714</td>\n",
       "      <td>6.537337</td>\n",
       "      <td>0.176663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.252785</td>\n",
       "      <td>6.652</td>\n",
       "      <td>6.066687</td>\n",
       "      <td>0.585313</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.872002</td>\n",
       "      <td>6.454</td>\n",
       "      <td>5.117701</td>\n",
       "      <td>1.336299</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1.233748</td>\n",
       "      <td>6.452</td>\n",
       "      <td>6.019245</td>\n",
       "      <td>0.432755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1.870766</td>\n",
       "      <td>6.375</td>\n",
       "      <td>7.606819</td>\n",
       "      <td>-1.231819</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1.070622</td>\n",
       "      <td>6.357</td>\n",
       "      <td>5.612702</td>\n",
       "      <td>0.744298</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1.000820</td>\n",
       "      <td>6.008</td>\n",
       "      <td>5.438742</td>\n",
       "      <td>0.569258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1.291788</td>\n",
       "      <td>5.973</td>\n",
       "      <td>6.163891</td>\n",
       "      <td>-0.190891</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Economy GDP per Capita  Test Happiness Score  Predicted Happiness Score  \\\n",
       "0                1.482383                 7.522                   6.638892   \n",
       "1                1.487097                 7.006                   6.650641   \n",
       "2                1.441634                 6.714                   6.537337   \n",
       "3                1.252785                 6.652                   6.066687   \n",
       "4                0.872002                 6.454                   5.117701   \n",
       "5                1.233748                 6.452                   6.019245   \n",
       "6                1.870766                 6.375                   7.606819   \n",
       "7                1.070622                 6.357                   5.612702   \n",
       "8                1.000820                 6.008                   5.438742   \n",
       "9                1.291788                 5.973                   6.163891   \n",
       "\n",
       "   Prediction Diff  \n",
       "0         0.883108  \n",
       "1         0.355359  \n",
       "2         0.176663  \n",
       "3         0.585313  \n",
       "4         1.336299  \n",
       "5         0.432755  \n",
       "6        -1.231819  \n",
       "7         0.744298  \n",
       "8         0.569258  \n",
       "9        -0.190891  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_predictions = linear_regression.predict(x_test)\n",
    "\n",
    "test_predictions_table = pd.DataFrame({\n",
    "    'Economy GDP per Capita': x_test.flatten(),\n",
    "    'Test Happiness Score': y_test.flatten(),\n",
    "    'Predicted Happiness Score': test_predictions.flatten(),\n",
    "    'Prediction Diff': (y_test - test_predictions).flatten()\n",
    "})\n",
    "\n",
    "test_predictions_table.head(10)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
